﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using COFE.Core;
using COFE.Core.Profile;

namespace COFE.Core.Lister
{
    /// <summary>
    /// Define the file system, it uses ParsePath() getMethod to return an entries
    /// </summary>
    public interface IPrimaryDirectoryLister : IDirectoryLister
    {
        /// <summary>
        /// Specify what kind of path is acceptable, you can use Regex masks only.
        /// Use ".*" to accept all path.
        /// </summary>
        string[] SupportedPathPatterns { get; }

        IDirectoryInfo[] RootDirectories { get; }

        /// <summary>
        /// Specify the root directory to store temporary files.
        /// </summary>
        string RootTempPath { get; }

        DirectoryListerStatusMode Status { get; }

        /// <summary>
        /// Parse a display name and return it's represented FileSystemInfoExA, null if not applicatable.
        /// if every directory volume return null (and it's not a directory path), 
        /// the display name will be lookup iterately.
        /// </summary>
        IFileSystemInfo ParsePath(string path, EntryConstructionFlags flags);
    }
}
